﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using KCMS.BusinessLogic.Interfaces;
using System.Net.Mail;
using System.Net;
using StructureMap;
using KCMS.BusinessLogic.Models;

namespace KCMS.BusinessLogic.Engine
{
    public class MailService : IMailService
    {

        ISettingsService settingsService = ObjectFactory.GetInstance<ISettingsService>();

        public void SendFeedbackMail(string nameFrom, string emailFrom, string subject, string body)
        {
            Settings settings = settingsService.getSettings();
            SendMail(nameFrom, emailFrom, settings.FeedBackReceiver, subject, body);
        }

        public void SendMail(string nameFrom, string emailFrom, string emailTo, string subject, string body)
        {
            Settings settings = settingsService.getSettings();
            MailMessage message = new MailMessage(); // создание нового письма
            message.To.Add(emailTo); // добавление адреса получателя
            message.From = new MailAddress(emailFrom, nameFrom); // указание имени и адреса отправителя
            message.Subject = subject; // указание темы письма 
            message.BodyEncoding = System.Text.Encoding.UTF8; // указание кодировки письма
            message.IsBodyHtml = true; // указание формата письма (true - HTML, false - не HTML)
            message.Body = body; // указание текста (тела) письма

            SmtpClient client = new SmtpClient(settings.SmtpServer, settings.SmtpPort);
            client.DeliveryMethod = SmtpDeliveryMethod.Network; // определяет метод отправки сообщений
            //client.EnableSsl = false; // отключает необходимость использования защищенного соединения с сервером
            //client.UseDefaultCredentials = false; // отключение использования реквизитов авторизации "по-умолчанию"
            client.Credentials = new NetworkCredential(settings.SmtpLogin, settings.SmtpPassword); // указание нужных реквизитов (имени пользователя и пароля) для авторизации на SMTP-сервере

            client.Send(message);
        }
    }
}
